// let 是jS es6 变量声明的关键字
// 1.变量名 num 代表值所在空间，
// 在内存中声明了一个空间地址
// 2.index.html 运行在浏览器中，
// js 是唯一语言
// 3.控制台通过变量名找到，全局变量
let num = 6; //数字类型
//js 是弱类型语言
let num1; //声明num1变量，数据类型没有指定
console.log(typeof num1); // typeof 变量的类型 undefined
num1 = 888; //数字类型
num1 = '数据类型改变'; //字符串类型
// 常量
const name = "xaing"; //字符串

//变量名
let boolSingle = true;
console.log(typeof boolSingle);
let num2 = null;
console.log(typeof num2);

// 对象字面量
var empty_object = {};

var stooge = {
    "first-name": "yang",
    "last-name": "xiang"
}

var flight = {
    airline: "oceanic",
    number: 815,
    departure: {
        IATA: "SYD",
        time: "2022-03-28 16:00",
        city: "nanchang"
    },
    departure: {
        IATA: "qwe",
        time: "2022-08-22 16:00",
        city: "beijing"
    },
}

//检索
stooge["first-name"];
flight.departure.IATA;
stooge["middle-name"] //undefined
stooge["first-name"] || "(none)" // ||填充默认值

//更新
stooge["first-name"] = "nihao";
stooge["middle-name"] = "jkh" //如果之前没有该属性值，那么该属性会被扩充


// 引用
var x = stooge;
x.number = 789;

// 原型
if (typeof Object.beget !== 'function') {
    Object.beget = function(o) {
        var F = function() {};
        F.prototype = o;
        return new F();
    };
}

//反射
flight.hasOwnProperty('number'); //true

//枚举
var name1;
for (name1 in another_stooge) {
    if (typeof another_stooge[name1] !== 'function') {
        document.writeln(name1 + ':' + another_stooge[name1]);
    }
}

//删除
delete another_stooge.airline;